class OutClass{
    public int data1 = 1;
    public int data2 = 2;
    private int data3 = 3;

    public static int data6 = 6;
    /*
    实例内部类
    1.实例内部类中，不能定义静态的成员变量？？？？
    如果定义 那么这个静态的成员应该是被fianl修饰

    2.实例内部类中，不能定义静态的成员方法？？？
    而静态方法不能被定义

    3.如何实例化，实例内部类？----外部类类名.内部类 变量 = 外部类引用.new 内部类();
    OutClass.InnerClass innerClass = outClass.new InnerClass();

    4.如何访问十年内部类 和 外部类中同名的成员变量？---实例内部类中包含外部类的this
    OutClass.this.成员变量
    如果是同名的静态的成员变量
    OutClass.静态成员变量成员变量
    * */
    class InnerClass{
        public int data1 = 1111;
        public int data4 = 4;
        public int data5 = 5;
      public static final int data6 = 7;

        public InnerClass(){
            System.out.println("实例内部类的构造方法");
        }
        public void InnerFunc(){
            System.out.println("实例内部类的普通方法");
            System.out.println(data1);
            System.out.println(this.data1);
            System.out.println(OutClass.this.data1);
            System.out.println(data2);
            System.out.println(data3);
            System.out.println(data4);
            System.out.println(data5);
            System.out.println(data6);
            System.out.println(OutClass.data6);
        }

       /* public static void staticFunc(){

        }*/
    }
    public void Func2(){
        InnerClass innerClass = new InnerClass();
        System.out.println(innerClass.data1);
    }
}

public class TestDemo {
    public static void main(String[] args) {
//    OutClass outClass = new OutClass();
//    OutClass.InnerClass innerClass = outClass.new InnerClass();
        OutClass.InnerClass innerClass = new OutClass().new InnerClass();
        innerClass.InnerFunc();
        OutClass outClass = new OutClass();
        outClass.Func2();
    }
}
